using System;
using System.Collections.Generic;
using System.Text;
using AUSRIS.Reports.Utilities.Deployment.Entities;

namespace AUSRIS.Reports.Utilities.Deployment.FileSystem
{
	/// <summary>
	/// Source control repository that stores the report definition files.
	/// </summary>
	public interface IRepository
	{
		/// <summary>
		/// Checks the file out of the repository
		/// </summary>
		void Checkout(CatalogFile file, string versionTag);

		/// <summary>
		/// Sets the file's revision, based on the file checked out
		/// </summary>
		void SetRevision(CatalogFile file);

		/// <summary>
		/// Checks out an entire module, to the working directory
		/// </summary>
		void CheckoutModule(string moduleName, string versionTag);

		/// <summary>
		/// Sets the DataSourceViewPath of the Model file
		/// </summary>
		void SetDataSourceViewPath(Model model);

		/// <summary>
		/// Determines if the file exists after checkout.
		/// This would return false if the file is new but not yet tagged for publishing
		/// </summary>
		bool FileExists(CatalogFile file);
	}
}